/*
    mySetCookie 设定 cookie 函数
        @pram   string  key     cookie键名
        @pram   string  value   cookie键值
        @pram   string  path    cookie路径  默认值是空字符串
        @pram   string  expires cookie时效  默认值是空字符串

*/

function mySetCookie(key , name , path = '' , expires = ''){

    // 如果 expires 存储 空字符串 不会对 expires 执行 操作 就 存储 空字符串 
    // 设定的时效 是 默认时效 session会话时效

    // 如果 expires 存储 不是空字符串 需要 通过时间对象 设定 时间时效
    // 创建当前事件对象 获取当前时间戳 减 8小时时间毫秒 加 时效毫秒 设定给时间对象解析

    const time = new Date();
    time.setTime( time.getTime() - 8*60*60*1000 + expires*1000 );

    document.cookie = `${key}=${name};path=${path};expires=${expires === '' ? '' : time}`;
}


function myGetCookie(){
    // 创建对象 存储结果
    var obj = {} ;

    // 获取 cookie键值对 字符串
    var str = document.cookie;

    // 以 分号空格 为 间隔 分割为数组
    var arr1 = str.split('; ');

    // 循环遍历 arr1 以 = 等号 为间隔 分割键值对
    arr1.forEach( function( item ){
        // item 就是 键值对 
        var arr2 = item.split('=') ;

        // 将 arr2[0] 作为 键名 
        // 将 arr2[1] 作为 键值 
        // 设定给对象  

        // 以 键名 从 对象中 调用数据 
        if( obj[ arr2[0] ] === undefined ){
            // 如果 是 undefined 证明 对象中没有这个 键名 
            // 也就是 第一次写入 键名 和 键值 
            // 直接 新增 单元 设定 键名 和 键值 

            obj[ arr2[0] ] = arr2[1] ;

        }else{
            // 如果 不是 undefined 证明 对象中 有这个 键名
            // 也就是 不是 第一次 写入 判断 键名 存储数据的数据类型
            if( typeof( obj[ arr2[0] ] ) !== 'object' ){
                // 如果 不是 object 证明 存储的不是数组 
                // 需要使用数组 存储 多个数据 
                obj[ arr2[0] ] = [ obj[ arr2[0] ] , arr2[1] ];

            }else{
                // 如果 是 object 证明 键名 存储的是数组 
                // 直接 push() 写入数据
                obj[ arr2[0] ].push( arr2[1] );
            }
        }
    })

    // return 返回 对象 存储的数据
    return obj ;
}